import { defineStore } from 'pinia'
import service from '@/api/axios' // 请求方法
import { menuListUrl } from '@/api/reqUrl'
export const menuStore = defineStore({
    id: 'menuStore', // id是唯一的，如果有多个文件，ID不能重复
    state: () => {
        return {
            /**
             * 当前路径 currentActiveMenuPath
             * 完整路径标题 completeTitleList
             * 点击菜单历史 menuItemHistory
             * 角色权限路由表 addRoutes
             */
            currentActiveMenuPath: '',
            completeTitleList: [],
            menuItemHistory: [],
            addRoutes: []
        }
    },
    getters: {
        // 筛选不为空的历史列表
        filterMenuItemHistory: (state) => {
            const list = state.menuItemHistory.filter((item) => {
                return item?.id
            })
            return list
        }
    },
    actions: {
        // 获取当前角色用户角色权限表请求
        getCurrentRoleAuthMenuFun() {
            return service.get(menuListUrl)
        },
        // 路由权限存储
        initAuthMenuFun(addRoutes) {
            this.addRoutes = addRoutes || []
        },
        // 获取完整路径标题
        getCompleteTitleListFun(completeTitleList) {
            this.completeTitleList = completeTitleList || []
        },
        // 获取点击的菜单历史
        getMenuItemHistoryFun(menuItem) {
            const findItem = this.menuItemHistory.find((item) => item?.id == menuItem?.id)
            if (!findItem && menuItem) {
                this.menuItemHistory.push(menuItem)
            }
        },
        // 删掉当前路由
        deleteOnlyMenuHistoryFun(id) {
            this.menuItemHistory = this.menuItemHistory.filter((item) => item.id != id)
        },
        // 删除历史路由数据
        deleteAllMenuHistoryFun() {
            this.menuItemHistory = []
        },
        // 清空当前的store数据
        reset() {
            this.$reset() // 重置 store 状态
        }
    },
    persist: {
        enabled: true,
        strategies: [
            {
                key: 'menuStore',
                storage: localStorage,
                // 需要存储的 state 状态，默认存储所有的状态
                paths: ['currentActiveMenuPath', 'completeTitleList', 'menuItemHistory']
            }
        ]
    }
})
